(function($){
	var form_defaults = {};
	var toolbar;
	var intv;
	function add(_1){
		_1.dialog.dialog({
            title:'添加'
        });
		form_defaults.url = _1.addUrl;
		_1.form.form('clear');
		if(_1.errB)
			_1.errB.css('display','none');
		_1.dialog.dialog('open');
		var _2 = _1.dialog.find(':radio');
		if(_2){
			var _3;
			var _4;
			var _5 = new Array();
			$.each(_2,function(i,v){
				_4 = $(v).attr('name');
				if(_3!=_4){_3 = _4;_5.push(_3);}
			});
			for(var i=0;i<_5.length;i++){
				$('[name="'+ _5[i] +'"]').eq(0).attr('checked','true');
			};
		}
	}
	
	function edit(_1) {
		var row = _1.table.datagrid('getSelected');
		if (row != null) {
            _1.dialog.dialog({
                title:'修改'
            });
            form_defaults.url = _1.editUrl;
            _1.form.form('clear');
            _1.form.form('load', row);
            if(_1.errB)
    			_1.errB.css('display','none');
			_1.errB.css('display','none');
            _1.dialog.dialog('open');
            var _2 = _1.dialog.find(':radio');
			if(_2){
				var _3;
				var _4;
				var _5 = new Array();
				$.each(_2,function(i,v){
					_4 = $(v).attr('name');
					if(_3!=_4){_3 = _4;_5.push(_3);}
				});
				for(var i=0;i<_5.length;i++){
					var f = 0;
					$.each(row,function(n,v){
						if(n == _5[i]){f = v;return false;}
					});
					if(f == 0){
						$('[name="'+ _5[i] +'"]').eq(0).attr('checked','true').val(f);
						$('[name="'+ _5[i] +'"]').eq(1).val('1');
					}
					if(f == 1){
						$('[name="'+ _5[i] +'"]').eq(0).val('0');
						$('[name="'+ _5[i] +'"]').eq(1).attr('checked','true').val(f);
					}					
				};
			}
        } else {
            $.messager.alert('警告', '请选择要编辑的内容！', 'warning');
        }    
	}
	
	/*
	 * 删除记录
	 * @param _1:defaults
	 * @param _2:id name
	 */
	function del(_1){
		var row = _1.table.datagrid('getSelected');
		if (row != null) {
			var n = _1.idName;
            var data = {};
			data[n]=row[n];
			
			var msg = '您确定要删除';
			msg += '"' + _1.map[n] + '"';
			msg += '为 “' + row[n] + '” 的记录么?';
            $.messager.confirm('确认', msg, function(r) {
                if (r) {
                    $.post(_1.delUrl, data, function(data) {
                        if(data){
							if(data.err || data.msgs)
								$.messager.alert('错误', '删除失败！', 'error');	
							else{
								$.messager.alert('信息', '删除成功！', 'info');
								_1.table.datagrid('deleteRow',_1.table.datagrid('getRowIndex',row));
							}
						}
                    });
                }
            });
        } else {
            $.messager.alert('警告', '请选择内容！', 'warning');
        }
	}
	/*
	 * 提交
	 * @param _1:default
	 * @param _2:需提交的json对象，默认为空
	 */
	function submit(_1,_2){
		if(_2){ //自定义
			$.post(form_defaults.url,_2,function(data){
				if(data){
					data = $.parseJSON(data);
	        		if(data.err || data.msgs)
						showErrorTip(_1.errB, data, _1.map);
					else{
						$.messager.alert('提示', '数据保存成功！', 'info');
						_1.dialog.dialog('close');
						_1.table.datagrid('reload');
					}
	        	}else
	        		$.messager.alert('错误', '数据保存失败！', 'error');
			});
		}else{
			_1.form.form('submit',form_defaults);
		}
	}
	/*
	 * 关闭
	 */
	function close(_1){
		_1.dialog.dialog('close');
	}
	//初始化
	function init(_1){
		//init dialog
		if(_1.dialog){
			var btns;
			try{
				btns = _1.dialog.dialog('options').buttons;
			}catch(e){}
			if(!btns || btns.length==0){
				_1.dialog.dialog({
					closed:true,
				    modal:true,
				    draggable:true,
				    resizable:true,
				    top:30,
			        buttons:[
			            {
			                text:'确定',
			                iconCls:'icon-ok',
			                handler:function() {
			            		submit(_1);
			            	}
			            },
			            {
			                text:'取消',
			                handler:function() {
			                    close(_1);
			                }
			            }
			        ]
				});
			}
		}
		//初始化form参数
		$.extend(form_defaults,{
			onSubmit: function(){
				return $(this).form('validate');
			},
	        success:function(data){
	        	if(data){
					data = $.parseJSON(data);
	        		if(data.err || data.msgs)
						showErrorTip(_1.errB, data, _1.map);
					else{
						$.messager.alert('提示', '数据保存成功！', 'info');
						_1.dialog.dialog('close');
						_1.table.datagrid('reload');
					}
	        	}
	        }
		});
		//初始化 toolbar
		var t_id = _1.table.attr('id');
		var arr = new Array();
		if(_1.addUrl){
			arr[arr.length] = {
                text:'添加',
                iconCls:'icon-add',
                handler:function(){
                    add(_1);
        		}
            };
			arr[arr.length] = '-';
		}
		if(_1.editUrl){
			arr[arr.length] = {
	                text:'修改',
	                iconCls:'icon-edit',
	                handler:function(){
	            		edit(_1);
	                }
	            };
			arr[arr.length] = '-';
		}
		if(_1.delUrl){
			arr[arr.length] = {
	                text:'删除',
	                iconCls:'icon-remove',
	                handler:function(){
	                	del(_1);
	            	}
	            };
		}
		arr[arr.length] = '-';
		_1.table.datagrid({
			toolbar:arr
		});
		addQuery(_1);
	}
	
	function addQuery(_1){
		if(_1.queryObj){
			if(_1.queryObj.is(':visible'))
				return;
			var parent = _1.table.parent().parent().parent();
			var toolbar = parent.find('.datagrid-toolbar');
			
			
			if(toolbar && toolbar.is(':visible')){
				var of = toolbar.position();
				var co = toolbar.children();
				var l = of.left + 10;
				var t = of.top;
				var l1 = co.length;
				for(var i=0;i<l1;i++){
					l += $(co[i]).outerWidth(true);
				}
				_1.queryObj.appendTo(toolbar.parent()).css({
					'left':l + 'px',
					'top':t + 'px',
					'display':'inline-block'
				});
			}
			setTimeout(function(){addQuery(_1)},500);
		}
	}
	
	$.fn.dgridex = function(_1e, _1f){
    	if(typeof _1e=="string"){
			switch(_1e){
				case 'add':
					return this.each(function(){
                        add($.extend({}, $.fn.dgridex.defaults));
                    });	
				case 'edit':
					return this.each(function(){
                        edit($.extend({}, $.fn.dgridex.defaults));
                    });
				case 'del':
					return this.each(function(){
                        del($.extend({}, $.fn.dgridex.defaults));
                    });
				case 'submit':
					return this.each(function(){
                        submit($.extend({}, $.fn.dgridex.defaults),_1f);
                    });
			}
		}    
        _1e = _1e || {};
		
		return this.each(function(){
            $.extend($.fn.dgridex.defaults, _1e);
            init($.extend({}, $.fn.dgridex.defaults),_1e);
        });
    };
    $.fn.dgridex.defaults = {
        table:null,
		form:null,
		dialog:null,
		addUrl:null,
		editUrl:null,
		delUrl:null,
		idName:null,
		map:null,
		queryObj:null,
		errB:null,
		container:null
	};
	
})(jQuery);

